Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Swing (Java)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Swing_(Java)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Swing_Java rootpage-Swing_Java skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Swing (Java)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">

<p><b>Swing</b> ist ein <a href="GUI-Toolkit" title="GUI-Toolkit">GUI-Toolkit</a> für die Programmiersprache <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a> von <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>.
Seit Java-Version 1.2 (1998) ist es Bestandteil der Java-Runtime. Swing gehört zu den <a href="Java_Foundation_Classes" title="Java Foundation Classes">Java Foundation Classes</a> (JFC), die eine Sammlung von Bibliotheken zur Programmierung von <a href="Grafische_Benutzeroberfl%C3%A4che" title="Grafische Benutzeroberfläche">grafischen Benutzerschnittstellen</a> bereitstellen. Zu diesen Bibliotheken gehören <a href="Java_2D" title="Java 2D">Java 2D</a>, die <a href="Java_Accessibility_API" title="Java Accessibility API">Java Accessibility API</a> (JAAPI), das <a href="Drag_and_Drop" title="Drag and Drop">Drag-and-Drop</a>-API und das <a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a> (AWT). Swing baut auf dem älteren AWT auf und ist mit den anderen APIs verwoben.
</p><p>Hauptkonkurrent von Swing ist das für <a href="Eclipse_(IDE)" title="Eclipse (IDE)">Eclipse</a> entwickelte <a href="Standard_Widget_Toolkit" title="Standard Widget Toolkit">SWT</a>. Der designierte Nachfolger von Swing ist das Framework <a href="JavaFX" title="JavaFX">JavaFX</a>, das seit März 2014 im Lieferumfang des Oracle JDK enthalten ist, das aber bisher nicht durch den <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a> als offizieller Java-Standard spezifiziert wurde.
</p>

<div class="mw-heading mw-heading2"><h2 id="Merkmale">Merkmale</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Aufbau">Aufbau</h3></div>
<p>Swing ist <a href="Model_View_Controller" title="Model View Controller">modular</a> und <a href="Objektorientierung" title="Objektorientierung">objektorientiert</a> aufgebaut, so dass es sich gerade für die Entwicklung komplexer Anwendungen gut eignet. Durch die Plattformunabhängigkeit entfällt ebenfalls viel Entwicklungs- und Testarbeit.
</p>
<div class="mw-heading mw-heading3"><h3 id="Pluggable_Look-and-Feel"><i>Pluggable Look-and-Feel</i></h3></div>
<p>Das Erscheinungsbild (<i>Look</i>, siehe <a href="Skin_(Computer)" title="Skin (Computer)">Skin</a>) und das Verhalten (<i>Feel</i>) von Swing-Komponenten kann mittels sogenannter <i>Look-and-Feels</i> angepasst werden. Auf allen <a href="Plattform_(Computer)" title="Plattform (Computer)">Plattformen</a> stehen sowohl das <a href="Motif" title="Motif">Motif</a>-Look-and-Feel als auch das Metal-Look-and-Feel (ab Java 5 das Ocean-Look-and-Feel) zur Verfügung, auf Linux Gtk, Mac und Windows zusätzlich ein dem systemüblichen angepasstes eigenes Look and Feel. Es existieren eine Reihe unabhängig entwickelter Erscheinungsbilder, wovon die meisten auf Metal basieren. Seit Java 1.5 ist das Synth-Look-and-Feel hinzugekommen, dessen aus Bildern zusammengesetztes Erscheinungsbild in einer XML-Datei beschrieben wird, sodass kein Java-Code geschrieben werden muss. Mit Java 1.6, Update 10 wurde das vollständig vektorbasierte Nimbus-Look-and-Feel eingeführt.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Leichtgewichtige_Komponenten">Leichtgewichtige Komponenten</h3></div>
<p>Swing-Komponenten werden direkt von Java <a href="Rasterung" title="Rasterung">gerendert</a> und sind nicht von nativen Betriebssystemkomponenten abhängig. Dadurch funktionieren alle Swing-Komponenten auf allen Plattformen gleich, unabhängig davon, ob die entsprechende Plattform eine Komponente zur Verfügung stellt oder nicht. Der Nachteil ist, dass eine Swing-Anwendung nicht wie eine für das Betriebssystem entwickelte Anwendung aussieht. Das kann aber durch eine Auswahl an entsprechenden Pluggable Look-and-Feels kompensiert werden. Diese Eigenschaft wird mit dem englischen Wort <i>Lightweight UI</i> beschrieben (lightweight = all-Java language).
</p>
<div class="mw-heading mw-heading3"><h3 id="Vergleich">Vergleich</h3></div>
<p>Im Vergleich zu <a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">AWT</a> hat man mit Swing folgende zusätzliche Komponenten, die zur Oberflächenerzeugung genutzt werden können:
</p>
<ul><li><i>Keyboard Accelerators</i>, also <a href="Tastenkombination" title="Tastenkombination">Tastenkombinationen</a> zur Steuerung von Komponenten</li>
<li><a href="Drag_and_Drop" title="Drag and Drop">Drag and Drop</a></li>
<li>Setzen des <a href="Look_and_Feel" title="Look and Feel">Look and Feel</a></li>
<li><a href="Tooltip" title="Tooltip">Tooltips</a></li>
<li>automatisches <a href="Doppelpufferung" title="Doppelpufferung">Double Buffering</a></li>
<li>neue Layout-Manager/Panels</li>
<li>Anwendungen mit <a href="Multiple_Document_Interface" title="Multiple Document Interface">Multiple Document Interface</a></li>
<li>zusätzliche Komponenten, um Tabellen und Baumstrukturen darzustellen</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Multithreading">Multithreading</h3></div>
<p>Swing ist nicht <a href="Threadsicherheit" title="Threadsicherheit">thread-sicher</a>, es kann also zu unerwarteten Wechselwirkungen zwischen verschiedenen <a href="Thread_(Informatik)" title="Thread (Informatik)">Threads</a> kommen, wenn nicht sorgfältig programmiert wird.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Stattdessen sind die Swing-Komponenten so implementiert, dass ihre Methoden stets in einem sogenannten <i>Event Dispatch Thread</i> des <a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">AWT</a> ausgeführt werden müssen, der die gesamte Ereignisverarbeitung grafisch-interaktiver Java-Anwendungen durchführt.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Um dies zu vereinfachen, stellt die Hilfsklasse <code>SwingUtilities</code> zwei Methoden bereit, die aus anderen Threads heraus aufgerufen werden können und ein ausführbares Objekt vom Typ <code>Runnable</code> als Parameter nehmen.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li><code>invokeLater</code> reiht das ausführbare Objekt in die Ereigniswarteschlange von AWT ein und kehrt noch vor dessen Ausführung in den aufrufenden Code zurück. Der aufrufende Thread wird also nicht blockiert.</li>
<li><code>invokeAndWait</code> reiht das ausführbare Objekt in die Ereigniswarteschlange von AWT ein und wartet, bis es abgearbeitet wurde. Der aufrufende Thread wird also blockiert.</li></ul>
<p>Verstöße gegen diese Konventionen werden dem Programmierer nicht gemeldet, so dass damit verbundene Schwierigkeiten lange unentdeckt bleiben bzw. gar nicht behoben werden. UI-Frameworks wie SWT oder auch .NET <a href="Windows_Forms" title="Windows Forms">WinForms</a> handhaben dies anders und quittieren fehlerhafte Aufrufe sofort.
</p><p>Außerhalb des JRE stellte Sun eine <i>SwingWorker</i> genannte Basisklasse zur Verfügung, die zwei zu überladende Methoden anbietet: Eine, die in einem eigenen Thread aufgerufen wird und eine längerdauernde Operation ausführen kann und eine weitere, die nach dem Ende dieser Operation im Event Dispatch Thread ausgeführt wird und Swing-Komponenten manipulieren darf. Des Weiteren existiert ein Mechanismus, der es erlaubt, Zwischenschritte (z.&nbsp;B. in einer Fortschritts-Anzeige) zu visualisieren. Seit Java 1.6 ist sie als javax.swing.SwingWorker im JRE enthalten.
</p>
<div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2></div>
<p>Swing wurde erstmals mit dem <a href="Java_Development_Kit" title="Java Development Kit">JDK</a> 1.1.5 Ende 1997 als externe Bibliothek ausgeliefert und ist seit JDK 1.2 („Java 2“) Ende 1998 fester Bestandteil der Java-Laufzeitumgebung. Swing hatte sehr bald den Ruf, eine schlechte Performance aufzuweisen und für „ernsthafte“ Anwendungen ungeeignet zu sein. Der Standard-Stil (<a href="Look%26Feel" class="mw-redirect" title="Look&amp;Feel">Look&amp;Feel</a>) von Swing-Fenstern fand ebenfalls nicht besonders viele Freunde.
</p><p>Sun legte daraufhin großes Augenmerk auf die Verbesserung des Aussehens der mitgelieferten <a href="Look_and_Feel" title="Look and Feel">Look and Feels</a>, sowie der Performance von Swing. Mittlerweile hat sich die Performance durch verbesserte Hardwareunterstützung der Beschleunigungsfunktionen von Grafikkarten, sowie über Performance-Verbesserungen in den Klassenbibliotheken selbst und bei der Java Runtime deutlich verbessert. Spätestens seit Java Version 1.4 2002 weist Swing keine merkbaren Performanceunterschiede zu nativen GUIs auf. Auch Performancevergleiche zwischen Swing und SWT zeigen keine Performanceunterschiede auf.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiel">Beispiel</h2></div>
<p>Als Beispiel für eine Swing-Anwendung wird hier das <a href="Hallo-Welt-Programm" title="Hallo-Welt-Programm">Hallo-Welt-Programm</a> angegeben:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">javax.swing.*</span><span class="p">;</span>

<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorldSwing</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Verpacke den auszuführenden Quellcode in ein eigenes Runnable-Objekt, </span>
<span class="w"> </span><span class="c1">// um diesen nachher im Event Dispatching Thread ausführen zu können</span>
<span class="w"> </span><span class="n">Runnable</span><span class="w"> </span><span class="n">guiCreator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Runnable</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">run</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Erstellt das Swing-Fenster</span>
<span class="w"> </span><span class="n">JFrame</span><span class="w"> </span><span class="n">fenster</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">JFrame</span><span class="p">(</span><span class="s">"Hallo Welt mit Swing"</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Swing anweisen, das Programm zu beenden, wenn das Fenster geschlossen wird</span>
<span class="w"> </span><span class="n">fenster</span><span class="p">.</span><span class="na">setDefaultCloseOperation</span><span class="p">(</span><span class="n">JFrame</span><span class="p">.</span><span class="na">EXIT_ON_CLOSE</span><span class="p">);</span>

<span class="w"> </span><span class="c1">// Fügt den "Hallo Welt"-Text hinzu</span>
<span class="w"> </span><span class="n">JLabel</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">JLabel</span><span class="p">(</span><span class="s">"Hallo Welt"</span><span class="p">);</span>
<span class="w"> </span><span class="n">fenster</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">label</span><span class="p">);</span>

<span class="w"> </span><span class="c1">// Zeigt das Fenster an</span>
<span class="w"> </span><span class="n">fenster</span><span class="p">.</span><span class="na">setSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="w"> </span><span class="mi">200</span><span class="p">);</span>
<span class="w"> </span><span class="n">fenster</span><span class="p">.</span><span class="na">setVisible</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">};</span>

<span class="w"> </span><span class="c1">// Führe den obigen Quellcode im Event-Dispatch-Thread aus</span>
<span class="w"> </span><span class="n">SwingUtilities</span><span class="p">.</span><span class="na">invokeLater</span><span class="p">(</span><span class="n">guiCreator</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>Teile dieses Quellcodes werden von unterschiedlichen <a href="Thread_(Informatik)" title="Thread (Informatik)">Threads</a> ausgeführt. Der Thread, der die Methode <i>main</i> ausführt, ist für gewöhnlich nicht der Event-Dispatch-Thread (EDT). Swingkomponenten sollten jedoch generell nur vom EDT erzeugt und verändert werden (falls in der Dokumentation nicht ausdrücklich anderes steht). Daher wird der Quellcode für die <a href="GUI" class="mw-redirect" title="GUI">GUI</a> in ein eigenes Runnable-Objekt verpackt. Der Thread, der die Methode <i>main</i> ausführt, erzeugt also nur das Runnable-Objekt und weist Swing an, diesen Quellcode später im EDT auszuführen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Erweiterungen">Erweiterungen</h2></div>
<p>Swing lässt sich an verschiedenen Stellen mittels des in Swing eingebauten Plug-In-Konzeptes erweitern. Typische Erweiterungen betreffen Look&amp;Feels, <a href="Layoutmanager" title="Layoutmanager">Layoutmanager</a> und weitere Komponenten.
</p><p>Das SUN-Open-Source-Projekt SwingLabs bietet eine Reihe von Erweiterungen für Swing und dient als Testumgebung für zukünftige Erweiterungen von Swing. Unter anderem wurden in SwingLabs die in Java 6 eingeführten Klassen GroupLayout, SystemTray und Desktop gehostet. Weitere Erweiterungen werden von der java.net Java Desktop Community<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> im Java Desktop Swing Depot gesammelt.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> JGoodies von Karsten Lentzsch bietet ebenso eine Reihe an Swing-Erweiterungen, wie beispielsweise das FormLayout.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>Das Projekt Spring Richclient bietet eine Integration von Swing in das <a href="Spring_(Framework)" title="Spring (Framework)">Spring</a> Framework. Es wird allerdings seit Mitte 2009 nicht mehr weiterentwickelt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Editoren">Editoren</h2></div>
<p>Es gibt eine Reihe meist kostenpflichtiger <a href="WYSIWYG" title="WYSIWYG">WYSIWYG</a> GUI Design Tools für Swing. Die folgenden sind die bekanntesten:<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li><a href="JFormDesigner" title="JFormDesigner">JFormDesigner</a> – Kommerzieller Editor, sowohl eigenständig als auch als Eclipse-, IntelliJ-IDEA- und JBuilder-Plugin</li>
<li><i>Jigloo</i> – Kommerzielles Eclipse-Plugin für Swing- und SWT-GUIs, kostenlos für nicht kommerzielle Zwecke</li>
<li><i><a href="Eclipse_WindowBuilder" title="Eclipse WindowBuilder">Eclipse WindowBuilder</a></i> – offizielles Eclipse-Plugin für Swing-, SWT-, AWT- und GWT-Oberflächen</li>
<li><i>Matisse4MyEclipse</i> – Portierung von <a href="NetBeans_IDE#GUI-Builder" title="NetBeans IDE">Matisse</a>, dem <a href="GUI-Builder" title="GUI-Builder">GUI-Builder</a> der <a href="NetBeans_IDE" title="NetBeans IDE">NetBeans IDE</a>, für Eclipse und Swing, läuft nur unter <i>MyEclipse</i></li>
<li><i>Visual Editor</i> – Open-Source-Eclipse-Plugin für Swing- und SWT-GUIs (zugehöriges Entwicklungsprojekt ist seit April 2012 nicht mehr aktiv)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li><a href="Deutsche_Sprache" title="Deutsche Sprache">Deutschsprachige</a> Bücher:
<ul><li>David Geary: <i>Graphic Java 2.0 Band II. Die JFC beherrschen (Swing).</i> 3. Auflage. Markt+Technik, 15. November 1999, ISBN 3-8272-9590-4 (Übersetzung des englischen Originals)</li>
<li>David Geary: <i>Graphic Java 2.0. Die JFC beherrschen (AWT).</i> 3. Auflage. Markt+Technik, 15. Juli 1999, ISBN 3-8272-9585-8 (Übersetzung des englischen Originals)</li>
<li>Paul Fischer: <i>Grafik-Programmierung mit Java-Swing.</i> Addison-Wesley, 15. September 2001, ISBN 3-8273-1910-2</li></ul></li>
<li><a href="Englische_Sprache" title="Englische Sprache">Englischsprachige</a> Bücher:
<ul><li>Marc Loy, Robert Eckstein, Dave Wood: <i>Java Swing.</i> 2. Auflage. O’Reilly, November 2002, ISBN 0-596-00408-7</li>
<li>Kathy Walrath, Mary Campione, Alison Huml: <i>The JFC Swing Tutorial.</i> 2. Auflage. Addison-Wesley Professional, Februar 2004, ISBN 0-201-91467-0 (Referenz)</li>
<li>Kim Topley: <i>Core Swing Advanced Programming.</i> Prentice Hall, 2000, ISBN 0-13-083292-8</li>
<li>Kim Topley: <i>Core, Java Foundation Classes.</i> Prentice Hall, 1998, ISBN 0-13-080301-4</li>
<li>David M. Geary: <i>Mastering the JFC – Volume II Swing.</i> 3. Auflage. Prentice Hall PTR, 1998, ISBN 0-13-079667-0 (Referenz)</li>
<li>David M. Geary: <i>Mastering the JFC – Volume I AWT.</i> 3. Auflage. Prentice Hall PTR, 1999, ISBN 0-13-079666-2 (Referenz)</li></ul></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wikibooks"></span></span></div><b><a href="https://de.wikibooks.org/wiki/Java_Standard:_Grafische_Oberfl%C3%A4chen_mit_Swing" class="extiw external" title="b:Java Standard: Grafische Oberflächen mit Swing">Wikibooks: Java Standard: Grafische Oberflächen mit Swing</a></b>&nbsp;– Lern- und Lehrmaterialien</div>
<ul><li><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/tutorial/uiswing/index.html">„The Swing Tutorial“</a> bei <a href="Oracle" title="Oracle">Oracle</a></li>
<li>Christian Ullenboom: <i>Java ist auch eine Insel</i>. <a rel="nofollow" class="external text" href="https://openbook.rheinwerk-verlag.de/javainsel/18_001.html"><i>Einführung in grafische Oberflächen</i>.</a> ISBN 978-3-8362-7737-2</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/6/docs/technotes/guides/swing/6.0/index.html"><i>Swing Enhancements in the Java Standard Edition 6.0</i></a> und <a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/6u10-142936.html"><i>SE 6 Update 10 Release Notes</i></a> bei <a href="Oracle" title="Oracle">Oracle</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Christian Ullenboom: <cite style="font-style:italic">Swing ist nicht Thread-sicher</cite>. (<a rel="nofollow" class="external text" href="http://www.tutego.com/java/articles/Swing-thread-sicher.html">online</a> [abgerufen am 9.&nbsp;März 2008]).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Swing+%28Java%29&amp;rft.au=Christian+Ullenboom&amp;rft.btitle=Swing+ist+nicht+Thread-sicher&amp;rft.genre=book" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><cite style="font-style:italic">AWT Threading Issues</cite>. (<a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/doc-files/AWTThreadIssues.html">online</a> [abgerufen am 18.&nbsp;April 2007]).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Swing+%28Java%29&amp;rft.btitle=AWT+Threading+Issues&amp;rft.genre=book" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><cite style="font-style:italic">SwingUtilities (Java Platform SE 6)</cite>. 2006 (<a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html">online</a> [abgerufen am 18.&nbsp;April 2007] Java-API-Dokumentation).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Swing+%28Java%29&amp;rft.btitle=SwingUtilities+%28Java+Platform+SE+6%29&amp;rft.date=2006&amp;rft.genre=book" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><span class="cite">Križnar Igor: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080704103309/http://cosylib.cosylab.com/pub/CSS/DOC-SWT_Vs._Swing_Performance_Comparison.pdf"><i>SWT Vs. Swing Performance Comparison.</i></a> (PDF) cosylab.com, 3.&nbsp;März 2006, archiviert vom <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */


.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}


/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fcosylib.cosylab.com%2Fpub%2FCSS%2FDOC-SWT_Vs._Swing_Performance_Comparison.pdf">Original</a></span> am <span style="white-space:nowrap;">4.&nbsp;Juli 2008</span><span>;</span><span class="Abrufdatum"> abgerufen am 16.&nbsp;September 2009</span>: „<i>Initial expectation before performing this benchmark was to find SWT outperform Swing. This expectation stemmed from greater responsiveness of SWT-based Java applications (e.g., Eclipse IDE) compared to Swing-based applications. However, this expectation could not be quantitatively confirmed.</i>“</span> <small class="archiv-bot"><span class="wp_boppel noviewer" aria-hidden="true" role="presentation"><span typeof="mw:File"><span title="i"></span></span></span>&nbsp;<b>Info:</b> Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</small><span style="display:none"><a rel="nofollow" class="external text" href="http://IABotmemento.invalid/http://cosylib.cosylab.com/pub/CSS/DOC-SWT_Vs._Swing_Performance_Comparison.pdf">@1</a></span><span style="display:none"><a rel="nofollow" class="external text" href="http://cosylib.cosylab.com/pub/CSS/DOC-SWT_Vs._Swing_Performance_Comparison.pdf">@2</a></span><span style="display:none">Vorlage:Webachiv/IABot/cosylib.cosylab.com</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ASwing+%28Java%29&amp;rft.title=SWT+Vs.+Swing+Performance+Comparison&amp;rft.description=SWT+Vs.+Swing+Performance+Comparison&amp;rft.identifier=https%3A%2F%2Fweb.archive.org%2Fweb%2F20080704103309%2Fhttp%3A%2F%2Fcosylib.cosylab.com%2Fpub%2FCSS%2FDOC-SWT_Vs._Swing_Performance_Comparison.pdf&amp;rft.creator=Kri%C5%BEnar%26%2332%3BIgor&amp;rft.publisher=cosylab.com&amp;rft.date=2006-03-03&amp;rft.source=http://cosylib.cosylab.com/pub/CSS/DOC-SWT_Vs._Swing_Performance_Comparison.pdf">&nbsp;</span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */


.mw-parser-output .webarchiv-memento a{color:inherit}


/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20050729002040/http://community.java.net/javadesktop/">Java Desktop</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> des <span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fcommunity.java.net%2Fjavadesktop%2F">Originals</a></span> vom 29. Juli 2005 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>) <small class="archiv-bot"><span class="wp_boppel noviewer" aria-hidden="true" role="presentation"><span typeof="mw:File"><span title="i"></span></span></span>&nbsp;<b>Info:</b> Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</small><span style="display:none"><a rel="nofollow" class="external text" href="http://IABotmemento.invalid/http://community.java.net/javadesktop/">@1</a></span><span style="display:none"><a rel="nofollow" class="external text" href="http://community.java.net/javadesktop/">@2</a></span><span style="display:none">Vorlage:Webachiv/IABot/community.java.net</span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090609154718/http://www.javadesktop.org/rollups/components/index.html">Swing Depot: Component Suites</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> des <span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fwww.javadesktop.org%2Frollups%2Fcomponents%2Findex.html">Originals</a></span> vom 9. Juni 2009 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>) <small class="archiv-bot"><span class="wp_boppel noviewer" aria-hidden="true" role="presentation"><span typeof="mw:File"><span title="i"></span></span></span>&nbsp;<b>Info:</b> Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</small><span style="display:none"><a rel="nofollow" class="external text" href="http://IABotmemento.invalid/http://www.javadesktop.org/rollups/components/index.html">@1</a></span><span style="display:none"><a rel="nofollow" class="external text" href="http://www.javadesktop.org/rollups/components/index.html">@2</a></span><span style="display:none">Vorlage:Webachiv/IABot/www.javadesktop.org</span></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jgoodies.com/">JGoodies Homepage</a></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><span class="cite">Bernhard Steppan: <a rel="nofollow" class="external text" href="https://www.computerwoche.de/a/gui-builder-fuer-eclipse-im-vergleich,550867"><i>Graphical User Interface: GUI-Builder für Eclipse im Vergleich.</i></a> In: <i><a href="Computerwoche" title="Computerwoche">Computerwoche</a>.</i> 11.&nbsp;November 2004,<span class="Abrufdatum"> abgerufen am 7.&nbsp;Dezember 2023</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ASwing+%28Java%29&amp;rft.title=Graphical+User+Interface%3A+GUI-Builder+f%C3%BCr+Eclipse+im+Vergleich&amp;rft.description=Graphical+User+Interface%3A+GUI-Builder+f%C3%BCr+Eclipse+im+Vergleich&amp;rft.identifier=https%3A%2F%2Fwww.computerwoche.de%2Fa%2Fgui-builder-fuer-eclipse-im-vergleich%2C550867&amp;rft.creator=Bernhard+Steppan&amp;rft.date=11.11.2004">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-08-29" href="https://de.wikipedia.org/wiki/?title=Swing_(Java)&amp;oldid=248136484">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>